home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / ntfs / device.h < prev    next >
C/C++ Source or Header  |  2005-10-18  |  4KB  |  116 lines

  1. /*
  2.  * device.h - Exports for low level device io. Part of the Linux-NTFS project.
  3.  *
  4.  * Copyright (c) 2000-2004 Anton Altaparmakov
  5.  *
  6.  * This program/include file is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU General Public License as published
  8.  * by the Free Software Foundation; either version 2 of the License, or
  9.  * (at your option) any later version.
  10.  *
  11.  * This program/include file is distributed in the hope that it will be
  12.  * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
  13.  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program (in the main directory of the Linux-NTFS
  18.  * distribution in the file COPYING); if not, write to the Free Software
  19.  * Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  20.  */
  21.  
  22. #ifndef _NTFS_DEVICE_H
  23. #define _NTFS_DEVICE_H
  24.  
  25. #ifdef HAVE_CONFIG_H
  26. #include "config.h"
  27. #endif
  28.  
  29. #include "device_io.h"
  30. #include "types.h"
  31. #include "support.h"
  32. #include "volume.h"
  33.  
  34. /*
  35.  * Defined bits for the state field in the ntfs_device structure.
  36.  */
  37. typedef enum {
  38.     ND_Open,    /* 1: Device is open. */
  39.     ND_ReadOnly,    /* 1: Device is read-only. */
  40.     ND_Dirty,    /* 1: Device is dirty, needs sync. */
  41. } ntfs_device_state_bits;
  42.  
  43. #define  test_ndev_flag(nd, flag)       test_bit(ND_##flag, (nd)->d_state)
  44. #define   set_ndev_flag(nd, flag)        set_bit(ND_##flag, (nd)->d_state)
  45. #define clear_ndev_flag(nd, flag)      clear_bit(ND_##flag, (nd)->d_state)
  46.  
  47. #define NDevOpen(nd)         test_ndev_flag(nd, Open)
  48. #define NDevSetOpen(nd)          set_ndev_flag(nd, Open)
  49. #define NDevClearOpen(nd)    clear_ndev_flag(nd, Open)
  50.  
  51. #define NDevReadOnly(nd)     test_ndev_flag(nd, ReadOnly)
  52. #define NDevSetReadOnly(nd)      set_ndev_flag(nd, ReadOnly)
  53. #define NDevClearReadOnly(nd)    clear_ndev_flag(nd, ReadOnly)
  54.  
  55. #define NDevDirty(nd)         test_ndev_flag(nd, Dirty)
  56. #define NDevSetDirty(nd)      set_ndev_flag(nd, Dirty)
  57. #define NDevClearDirty(nd)    clear_ndev_flag(nd, Dirty)
  58.  
  59. /*
  60.  * The ntfs device structure defining all operations needed to access the low
  61.  * level device underlying the ntfs volume.
  62.  */
  63. struct ntfs_device {
  64.     struct ntfs_device_operations *d_ops;    /* Device operations. */
  65.     unsigned long d_state;            /* State of the device. */
  66.     char *d_name;                /* Name of device. */
  67.     void *d_private;            /* Private data used by the
  68.                            device operations. */
  69. };
  70.  
  71. struct stat;
  72.  
  73. /*
  74.  * The ntfs device operations defining all operations that can be performed on
  75.  * the low level device described by an ntfs device structure.
  76.  */
  77. struct ntfs_device_operations {
  78.     int (*open)(struct ntfs_device *dev, int flags);
  79.     int (*close)(struct ntfs_device *dev);
  80.     s64 (*seek)(struct ntfs_device *dev, s64 offset, int whence);
  81.     s64 (*read)(struct ntfs_device *dev, void *buf, s64 count);
  82.     s64 (*write)(struct ntfs_device *dev, const void *buf, s64 count);
  83.     s64 (*pread)(struct ntfs_device *dev, void *buf, s64 count, s64 offset);
  84.     s64 (*pwrite)(struct ntfs_device *dev, const void *buf, s64 count,
  85.             s64 offset);
  86.     int (*sync)(struct ntfs_device *dev);
  87.     int (*stat)(struct ntfs_device *dev, struct stat *buf);
  88.     int (*ioctl)(struct ntfs_device *dev, int request, void *argp);
  89. };
  90.  
  91. extern struct ntfs_device *ntfs_device_alloc(const char *name, const long state,
  92.         struct ntfs_device_operations *dops, void *priv_data);
  93. extern int ntfs_device_free(struct ntfs_device *dev);
  94.  
  95. extern s64 ntfs_pread(struct ntfs_device *dev, const s64 pos, s64 count,
  96.         void *b);
  97. extern s64 ntfs_pwrite(struct ntfs_device *dev, const s64 pos, s64 count,
  98.         const void *b);
  99.  
  100. extern s64 ntfs_mst_pread(struct ntfs_device *dev, const s64 pos, s64 count,
  101.         const u32 bksize, void *b);
  102. extern s64 ntfs_mst_pwrite(struct ntfs_device *dev, const s64 pos, s64 count,
  103.         const u32 bksize, void *b);
  104.  
  105. extern s64 ntfs_cluster_read(const ntfs_volume *vol, const s64 lcn,
  106.         const s64 count, void *b);
  107. extern s64 ntfs_cluster_write(const ntfs_volume *vol, const s64 lcn,
  108.         const s64 count, const void *b);
  109.  
  110. extern s64 ntfs_device_size_get(struct ntfs_device *dev, int block_size);
  111. extern s64 ntfs_device_partition_start_sector_get(struct ntfs_device *dev);
  112. extern int ntfs_device_heads_get(struct ntfs_device *dev);
  113. extern int ntfs_device_sectors_per_track_get(struct ntfs_device *dev);
  114.  
  115. #endif /* defined _NTFS_DEVICE_H */
  116.